/* Zatok - язык программирования текстовых игр
 * (С) 2010 - 2012 Меркулов Матвей Юрьевич
 * Код лицензирован под лицензией GNU LGPL
 * Вы можете прочитать текст лицензии по адресу:
 * http://www.gnu.org/copyleft/lesser.html
 * или прочитать русский перевод по адресу:
 * http://ru.wikisource.org/wiki/GNU_Lesser_General_Public_License
 */

package base.value.userobject;

import base.CProject;
import base.module.CModule;

public class CMoveObject extends CModule {
	@Override
	public void Init() {
		AssertParam( 2 );
	}

	
	
	@Override
	public void Execute() {
		Do( Param[ 0 ].ToObject(), Param[ 1 ].ToObject(), this );
	}

	
	
	public static void Do( CUserObject SourceObject, CUserObject DestinationObject, CModule Module ) {
		if( SourceObject == CProject.RootObject ) Module.Error( "Корневой объект нельзя перемещать" );
		if( SourceObject == CProject.Null ) Module.Error( "Объект ''Ничто'' нельзя перемещать" );
		if( SourceObject == DestinationObject ) Module.Error( "Нельзя переместить объект в самого себя" );
		if( SourceObject.Parent != CProject.Null ) SourceObject.Parent.Children.remove( SourceObject );
		if( DestinationObject != CProject.Null ) DestinationObject.Children.add( SourceObject );
		SourceObject.Parent = DestinationObject;
	}
}
